home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 41 / Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso / -seriously_amiga- / virus / virus_checkerii / install_virus_checker < prev    next >
Text File  |  1999-04-19  |  16KB  |  605 lines

  1. ;VirusCheckerII's New Installer Script
  2. ;
  3. ;$VER: Virus_CheckerII_Installer v2.01 (06.04.99) ß1998-1999 by Alex van Niel
  4.  
  5.  
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7. ;;;
  8. ;;; Get the version and revision number of file/device/library/OS/etc
  9. ;;;
  10. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  11. ;
  12. ; Taken from original Installer Script of Virus_Checker and Virus_CheckerII
  13. ;
  14. ; INPUTS: Item    ; Name of device/file/library/etc. "" for OS version
  15. ;
  16. ; OUTPUTS: VerN        ; (long) version/revision number
  17. ;          Ver        ; Version number
  18. ;          Rev        ; Revision number
  19. ; NOTE: Both Ver and Rev returned as 0 if "WV_Item" does not exist
  20. ;
  21. (procedure WhatVersion
  22.     (
  23.     (if (= VerN "")
  24.         (set VerNum (getversion))        ; For OS
  25.         (set VerNum (getversion VerN)))    ; For other "files"
  26.     (set Ver (/ VerNum 65536))
  27.     (set Rev (- VerNum (* Ver 65536)))
  28.     )
  29. )
  30.  
  31. (procedure P_setvcenv
  32.     (
  33.  
  34.         (set #vcpath_env    (cat
  35.                                 ("setenv Virus_Checker_Path \"%s\"\n" @default-dest)
  36.                                 ("copy env:Virus_Checker_Path envarc: quiet\n")
  37.                             )
  38.         )
  39.  
  40.         (textfile
  41.             (dest "T:VCEnvSet")
  42.             (append #vcpath_env)
  43.         )
  44.  
  45.         (execute "T:VCEnvSet")
  46.         (delete "T:VCEnvSet")
  47.     )
  48. )
  49.  
  50.     (set    #hail        (cat    "VirusCheckerII Installation Utility\n\n"
  51.                                 "VirusCheckerII is ShareWare,\n"
  52.                                 "please consider registering.\n\n"
  53.                                 "VirusCheckerII is (c)1997/1999 by Alex van Niel\n"
  54.                                 "Virus_Checker is (c)1990/1995 by John Veldthuis\n"
  55.                         )
  56.     )
  57.     (set    #fullinstall    "Full Install")
  58.     (set    #update        "Update")
  59.     (set    #where_vc    (cat    "First, please select the directory to put Virus_CheckerII in.\n\n"
  60.                                 "The Installer will create a drawer called \'Virus_CheckerII\' "
  61.                                 "where all the files are put into. You don't need to make "
  62.                                 "one yourself."
  63.                         )
  64.     )
  65.     (set    #whatinstall    (cat    "Would you like to install VirusCheckerII fully "
  66.                                 "or do you want to update a currently installed version?"
  67.                         )
  68.     )
  69.     (set    #installhelp    (cat    "Full Install, installs the complete program, "
  70.                                     "update, installs only the files that are new or not "
  71.                                     "yet present.\n"
  72.                                     "Libraries, the latest brainfile and the main executable "
  73.                                     "are good examples of files that would possibly be copied "
  74.                                     "if they have been changed since the last release."
  75.                             )
  76.     )
  77.     (set    #allfiles        "Copying all files from distribution archive")
  78.     (set    #copyallfiles    (cat    "The Installer is about to copy all the files from the "
  79.                                     "distribution archive to \"%s\". It will not check "
  80.                                     "the versions of the files, so beware.\n\n"
  81.                                     "If you already have installed, VirusCheckerII and want "
  82.                                     "to update it, please press abort, start the installer again and choose "
  83.                                     "update instead."
  84.                             )
  85.     )
  86.     (set    #none            "None")
  87.     (set    #bestplace        (cat    "The best place to have VirusCheckerII started from is from the User-startup "
  88.                                     "that way it can monitor the system as early as possible and allowable. "
  89.                                     "You can also choose WBStartup for easy acces and still a pretty good safety "
  90.                                     "Choose User-Startup if you want to have the installer add a line to your "
  91.                                     "User-Startup, else choose WBStartup and the installer will copy a special "
  92.                                     "icon to the WBStartup drawer, or None if you aren't sure yet and want to decide later."
  93.                             )
  94.     )
  95.     (set    #vcrunfrom        (cat    "To have VirusCheckerII start as early as possible, choose User-Startup "
  96.                                     "and the installer will add a line to your User-Startup. VirusCheckerII will then "
  97.                                     "automatically startup when you boot your system.\n\n"
  98.                                     "To have VirusCheckerII start from your WBStartup, choose the related button. "
  99.                                     "The installer will copy a special icon to the WBStartup and VirusCheckerII will "
  100.                                     "be started when your workbench is launched.\n\n"
  101.                                     "If you aren\'t sure when you want VirusCheckerII to be started, just press None "
  102.                                     "that way you can choose later."
  103.                             )
  104.     )
  105.     (set    #vcrunchoose    "Please choose how/when you want VirusCheckerII to be started...")
  106.     (set    #adddat            "The installer needs to add the following line to your \s:User-Startup\ file\n\n%s")
  107.  
  108.     (set    #copyvcbrain    "Copying VirusChecker.brain")
  109.     (set    #copyxfdlib        "Copying xfdmaster.library")
  110.     (set    #copybguilib    "Copying bgui.library")
  111.     (set    #copyxfddecrs    "Copying XFD external decrunchers, please choose which ones to install")
  112.     (set    #copyxvslib        "Copying Xvs.Library")
  113.     (set    #copyxadlib     "Copying Xadmaster.Library")
  114.     (set    #copyxfddecrs    "Copying XAD external decrunchers, please choose which ones to install")
  115.     (set    #copyvcprefs    "Copying VCPrefs")
  116.     (set    #copyvcpparts    "Copying extra parts of VCPrefs...")
  117.  
  118.     (set    #copyinglibs    "The installer is about to install the libraries supplied with this archive into LIBS:, ")
  119.  
  120.     (set    #copyvcproject    "Copying and Adjusting VirusChecker startup Icon")
  121.     (set    #adjtooltype    "Adjusting ToolType")
  122.     (set    #makevcdir      "Creating VirusCheckerII drawer")
  123.     (set    #skip            "Skip this part")
  124.     (set    #proceed        "Proceed")
  125.     (set    #proceedhelp    (cat    "Press \'Proceed\' to install the part, or press skip if you don't want "
  126.                                     "to install that particular part but do want to continue installing "
  127.                                     "Virus_CheckerII. You could also press Abort Install to stop the complete "
  128.                                     "installation."
  129.                             )
  130.     )
  131.     (set    #upd-guide        "Updating Guide")
  132.     (set    #upd-main        "Updating Virus_CheckerII")
  133.     (set    #upd-brain        "Updating VirusChecker.brain")
  134.     (set    #upd-xvs        "Updating Xvs.Library")
  135.  
  136.     (set    #upd-xfd        "Updating XfdMaster.Library")
  137.     (set    #upd-xad        "Updating XadMaster.Library")
  138.     (set    #upd-vcp        "Updating VCPrefs")
  139.  
  140.     (set    #updating        (cat    "The installer is about to update Virus_CheckerII in\n"
  141.                                     "\'%s\'.\n"
  142.                                     "Is this correct?\n"
  143.                                     "(If you want to have Virus_CheckerII updated in another directory, "
  144.                                     "then press \'No\' and you will automatically get a requester to "
  145.                                     "choose the correct drawer)\n"
  146.                                     "If you have not installed Virus_CheckerII fully before, then "
  147.                                     "I recommend that you abort this installation for now and choose "
  148.                                     "\'Full Install\' instead."
  149.                             )
  150.     )
  151.     (set    #versions        (cat
  152.                                     "Currently installed versions (1/2):\n\n"
  153.                                     "Virus_CheckerII v%ld.%ld\n"
  154.                                     "VirusChecker.brain v%ld.%ld\n"
  155.                                     "VirusChecker.guide v%ld.%ld\n"
  156.                                     "Xvs.Library v%ld.%ld\n\n"
  157.                                     "Versions in archive:\n"
  158.                                     "Virus_CheckerII v%ld.%ld\n"
  159.                                     "VirusChecker.brain v%ld.%ld\n"
  160.                                     "VirusChecker.guide v%ld.%ld\n"
  161.                                     "Xvs.Library v%ld.%ld\n"
  162.                                     "(Files that have version 0.0 are in fact not installed)"
  163.                             )
  164.     )
  165.  
  166.     (set    #versions2        (cat
  167.                                     "Currently installed versions (2/2):\n\n"
  168.                                     "XfdMaster.Library v%ld.%ld\n"
  169.                                     "XadMaster.Library v%ld.%ld\n"
  170.                                     "VCPrefs v%ld.%ld\n\n"
  171.                                     "Versions in archive:\n"
  172.                                     "XfdMaster.Library v%ld.%ld\n"
  173.                                     "XadMaster.Library v%ld.%ld\n"
  174.                                     "VCPrefs v%ld.%ld\n"
  175.                                     "(Files that have version 0.0 are in fact not installed)"
  176.                             )
  177.     )
  178.  
  179.     (set    #install_dir    "Please specify where VirusCheckerII should be installed\n(A drawer will be created here)")
  180.     (set    #update_dir        "Please specify path of already installed VirusCheckerII")
  181.  
  182.     (set    #needtoreset    (cat    "Virus_CheckerII is an Anti Virus utility which is worked upon almost "
  183.                                     "24hrs a day. Problems might rise in spite of this. Most of these "
  184.                                     "problems however are caused by not or half reading the documentation. "
  185.                                     "I therefore recommend that you read the documentation from front to back. It "
  186.                                     "might happen that some problems are not solved even then, if so, feel free to "
  187.                                     "contact me. How can be found in the documentation.\n\n"
  188.                                     "I personally recommend that you reset your computer now so that Virus_CheckerII "
  189.                                     "can start properly."
  190.                        )
  191.     )
  192.  
  193.     (set    #yes            "Yes")
  194.     (set    #no                "No")
  195.  
  196. (welcome)
  197. (message #hail)
  198.  
  199. (set    #dofull    (askbool    (default 1)
  200.                             (prompt #whatinstall)
  201.                             (help #installhelp)
  202.                             (choices #fullinstall #update)
  203.                 )
  204. )
  205.  
  206. (if #dofull
  207.  
  208.     (
  209.         (complete    0)
  210.         (message #where_vc)
  211.         (set    #vcpath        (askdir    (prompt #install_dir)
  212.                                     (help @askdir-help)
  213.                                     (default @default-dest)
  214.                             )
  215.         )
  216.  
  217.         (set    @default-dest    (tackon #vcpath "Virus_CheckerII"))
  218.  
  219.         (P_setvcenv)
  220.  
  221.         (    ;copying all the files from the distribution
  222.             (message    (#copyallfiles    @default-dest))
  223.             (copyfiles    (prompt    #allfiles)
  224.                         (source    "")
  225.                         (dest    @default-dest)
  226.                         (all)
  227.                         (infos)
  228.                         (optional nofail askuser )
  229.             )
  230.  
  231.             (complete    45)
  232.  
  233.             (set    #user    (askbool    (default 1)
  234.                                         (prompt #copyinglibs)
  235.                                         (help #proceedhelp)
  236.                                         (choices #proceed #skip)
  237.                             )
  238.             )
  239.  
  240.             (if #user
  241.  
  242.                 (
  243.                     (complete    50)
  244.  
  245.                     (copylib (prompt #copyxfdlib)
  246.                         (help @copylib-help)
  247.                         (source "libs/xfdmaster.library")
  248.                         (dest "LIBS:")
  249.                         (optional nofail askuser)
  250.                     )
  251.  
  252.                     (complete    60)
  253.  
  254.                     (copylib (prompt #copybguilib)
  255.                         (help @copylib-help)
  256.                         (source "libs/bgui.library")
  257.                         (dest "LIBS:")
  258.                         (optional nofail askuser)
  259.                     )
  260.  
  261.                     (complete    70)
  262.  
  263.                     (copyfiles (prompt #copyxfddecrs)
  264.                         (help @copyfiles-help)
  265.                         (source "libs/xfd")
  266.                         (dest "LIBS:xfd")
  267.                         (all)
  268.                         (optional nofail askuser)
  269.                         (confirm)
  270.                     )
  271.  
  272.                     (complete 80)
  273.  
  274.                     (copylib (prompt #copyxvslib)
  275.                         (help @copylib-help)
  276.                         (source "libs/Xvs.library")
  277.                         (dest "LIBS:")
  278.                         (optional nofail askuser)
  279.                     )
  280.  
  281.                     (complete 85)
  282.  
  283.                     (copylib (prompt #copyxadlib)
  284.                         (help @copylib-help)
  285.                         (source "libs/xadmaster.library")
  286.                         (dest "LIBS:")
  287.                         (optional nofail askuser)
  288.                     )
  289.  
  290.                     (complete 90)
  291.  
  292.                     (copyfiles (prompt #copyxaddecrs)
  293.                         (help @copyfiles-help)
  294.                         (source "libs/xad")
  295.                         (dest "LIBS:xad")
  296.                         (all)
  297.                         (optional nofail askuser)
  298.                         (confirm)
  299.                     )
  300.  
  301.                     (copylib (prompt #copyvcprefs)
  302.                         (help @copylib-help)
  303.                         (source "VCPrefs")
  304.                         (dest "SYS:Prefs")
  305.                         (optional nofail askuser)
  306.                     )
  307.  
  308.                     (copyfiles (prompt #copyvcpparts)
  309.                         (help @copyfiles-help)
  310.                         (source "Classes/Gadgets/tabs.gadget")
  311.                         (dest "LIBS:Gadgets")
  312.                         (all)
  313.                         (optional nofail)
  314.                         (confirm)
  315.                     )
  316.  
  317.                 )
  318.  
  319.             )
  320.         )
  321.  
  322.         (complete    95)
  323.  
  324.         (
  325.             (message    #vcrunfrom)
  326.             (set    #vc-startup    (askchoice
  327.                                     (prompt #vcrunchoose)
  328.                                     (help #bestplace)
  329.                                     (default 0)
  330.                                     (choices "User-Startup" "WBStartup" #none)
  331.                                 )
  332.             )
  333.             (if (= #vc-startup 0)
  334.                 (
  335.                     (set    #vc-cmd    (tackon @default-dest "Virus_CheckerII"))
  336.                     (startup @app-name    (prompt (#adddat #vc-cmd))
  337.                                         (help @startup-help)
  338.                                         (command #vc-cmd)
  339.                     )
  340.                     (copylib (prompt #copyvcbrain)
  341.                         (help @copylib-help)
  342.                         (source "VirusChecker.brain")
  343.                         (dest "L:")
  344.                         (optional nofail askuser)
  345.                     )
  346.  
  347.                 )
  348.             )
  349.  
  350.             (if (= #vc-startup 1)
  351.                 (
  352.                     (copyfiles    (prompt #copyvcproject)
  353.                                 (help @copylib-help)
  354.                                 (source "VC_II_Project.info")
  355.                                 (dest "SYS:WBStartup/")
  356.                                 (newname "Virus_CheckerII.info")
  357.                                 (optional nofail askuser)
  358.                     )
  359.  
  360.                     (set #vcprojecttool (tackon @default-dest "Virus_CheckerII"))
  361.                     (tooltype
  362.                         (prompt #adjtooltype)
  363.                         (dest "SYS:WBStartup/Virus_CheckerII")
  364.                         (setdefaulttool #vcprojecttool)
  365.                     )
  366.                 )
  367.  
  368.             )
  369.             (if (= #vc-startup 2)
  370.             )
  371.  
  372.             (complete    100)
  373.  
  374.         )
  375.  
  376.     )    ;then statement
  377.  
  378.     (    ;else statement
  379.  
  380.         (complete    0)
  381.  
  382.         (if (= (exists "ENV:Virus_Checker_Path" (noreq)) 1)
  383.  
  384.             (set @default-dest (getenv "Virus_Checker_Path"))
  385.  
  386.             (
  387.                 (set    #updpath    (askdir    (prompt #update_dir)
  388.                                             (help @askdir-help)
  389.                                             (default @default-dest)
  390.                                     )
  391.                 )
  392.                 (set    @default-dest    #updpath)
  393.             )
  394.         )
  395.  
  396.         (set    #userupd    (askbool    (default 1)
  397.                                         (prompt    (#updating    @default-dest))
  398.                                         (help    #upddirhelp)
  399.                                         (choices    #yes    #no)
  400.                             )
  401.         )
  402.  
  403.         (if        (=    #userupd    0)
  404.             (
  405.                 (set    #updpath    (askdir    (prompt #update_dir)
  406.                                             (help @askdir-help)
  407.                                             (default @default-dest)
  408.                                     )
  409.                 )
  410.                 (set    @default-dest    #updpath)
  411.             )
  412.         )
  413.  
  414.         (complete    10)
  415.  
  416.         (if (= (exists "L:VirusChecker.brain" (noreq)) 1)
  417.             (
  418.                 (set    VerN    "L:VirusChecker.brain")
  419.                 (WhatVersion)
  420.                 (set    #brainver    Ver)
  421.                 (set    #brainrev    Rev)
  422.             )
  423.  
  424.             (
  425.                 (set    VerN    (tackon    @default-dest    "VirusChecker.brain"))
  426.                 (WhatVersion)
  427.                 (set    #brainver    Ver)
  428.                 (set    #brainrev    Rev)
  429.             )
  430.         )
  431.  
  432.         (set    VerN    (tackon    @default-dest    "Virus_CheckerII"))
  433.         (WhatVersion)
  434.         (set    #mainver    Ver)
  435.         (set    #mainrev    Rev)
  436.  
  437.         (set    VerN    (tackon    @default-dest    "Virus_Checker.guide"))
  438.         (WhatVersion)
  439.         (set    #guidever    Ver)
  440.         (set    #guiderev    Rev)
  441.  
  442.  
  443.         (set    VerN    "Virus_CheckerII")
  444.         (WhatVersion)
  445.         (set    #main2ver    Ver)
  446.         (set    #main2rev    Rev)
  447.  
  448.         (set    VerN    "VirusChecker.brain")
  449.         (WhatVersion)
  450.         (set    #brain2ver    Ver)
  451.         (set    #brain2rev    Rev)
  452.  
  453.         (set    VerN    "Virus_Checker.guide")
  454.         (WhatVersion)
  455.         (set    #guide2ver    Ver)
  456.         (set    #guide2rev    Rev)
  457.  
  458.  
  459.         (set    VerN    "Libs:Xvs.Library")
  460.         (WhatVersion)
  461.         (set    #xvsver    Ver)
  462.         (set    #xvsrev    Rev)
  463.  
  464.         (set    VerN    "Libs/Xvs.Library")
  465.         (WhatVersion)
  466.         (set    #xvs2ver    Ver)
  467.         (set    #xvs2rev    Rev)
  468.  
  469.         (message    (#versions    #mainver    #mainrev    #brainver    #brainrev    #guidever    #guiderev    #xvsver    #xvsrev    #main2ver    #main2rev    #brain2ver    #brain2rev    #guide2ver    #guide2rev    #xvs2ver    #xvs2rev))
  470.  
  471.         (if (> (+ (< #xvsver #xvs2ver) (< #xvsrev #xvs2rev) ) 0)
  472.             (copyfiles (prompt #upd-xvs)
  473.                 (help @copylib-help)
  474.                 (source "libs/Xvs.library")
  475.                 (dest "LIBS:")
  476.                 (optional nofail askuser)
  477.             )
  478.         )
  479.  
  480.         (if (> (+ (< #guidever #guide2ver) (< #guiderev #guide2rev) ) 0)
  481.             (copyfiles    (prompt #upd-guide)
  482.                         (help @copylib-help)
  483.                         (source "Virus_Checker.guide")
  484.                         (dest @default-dest)
  485.                         (optional nofail askuser)
  486.             )
  487.         )
  488.  
  489.         (complete    30)
  490.  
  491.         (if (> (+ (< #mainver #main2ver) (< #mainrev #main2rev) ) 0)
  492.             (copyfiles    (prompt #upd-main)
  493.                         (help @copylib-help)
  494.                         (source "Virus_CheckerII")
  495.                         (dest @default-dest)
  496.                         (optional nofail askuser)
  497.             )
  498.         )
  499.  
  500.         (complete    50)
  501.  
  502.         (if (= (exists "L:VirusChecker.brain" (noreq)) 1)
  503.             (
  504.                 (if (> (+ (< #brainver #brain2ver) (< #brainrev #brain2rev) ) 0)
  505.                     (copyfiles (prompt #upd-brain)
  506.                         (help @copylib-help)
  507.                         (source "VirusChecker.brain")
  508.                         (dest "L:")
  509.                         (optional nofail askuser)
  510.                     )
  511.                 )
  512.  
  513.                 (if (> (+ (< #brainver #brain2ver) (< #brainrev #brain2rev) ) 0)
  514.                     (copyfiles (prompt #upd-brain)
  515.                         (help @copylib-help)
  516.                         (source "VirusChecker.brain")
  517.                         (dest @default-dest)
  518.                         (optional nofail askuser)
  519.                     )
  520.                 )
  521.             )
  522.  
  523.             (
  524.                 (if (> (+ (< #brainver #brain2ver) (< #brainrev #brain2rev) ) 0)
  525.                     (copyfiles (prompt #upd-brain)
  526.                         (help @copylib-help)
  527.                         (source "VirusChecker.brain")
  528.                         (dest @default-dest)
  529.                         (optional nofail askuser)
  530.                     )
  531.                 )
  532.             )
  533.         )
  534.  
  535.         (set    VerN    "Libs:Xfdmaster.Library")
  536.         (WhatVersion)
  537.         (set    #xfdver    Ver)
  538.         (set    #xfdrev    Rev)
  539.  
  540.         (set    VerN    "Libs/Xfdmaster.Library")
  541.         (WhatVersion)
  542.         (set    #xfd2ver    Ver)
  543.         (set    #xfd2rev    Rev)
  544.  
  545.         (set    VerN    "Libs:Xadmaster.Library")
  546.         (WhatVersion)
  547.         (set    #xadver    Ver)
  548.         (set    #xadrev    Rev)
  549.  
  550.         (set    VerN    "Libs/Xadmaster.Library")
  551.         (WhatVersion)
  552.         (set    #xad2ver    Ver)
  553.         (set    #xad2rev    Rev)
  554.  
  555.         (set    VerN    "SYS:Prefs/VCPrefs")
  556.         (WhatVersion)
  557.         (set    #vcpver    Ver)
  558.         (set    #vcprev    Rev)
  559.  
  560.         (set    VerN    "VCPrefs")
  561.         (WhatVersion)
  562.         (set    #vcp2ver    Ver)
  563.         (set    #vcp2rev    Rev)
  564.  
  565.         (message (#versions2 #xfdver #xfdrev #xadver #xadrev #vcpver #vcprev #xfd2ver #xfd2rev #xad2ver #xad2rev #vcp2ver #vcp2rev))
  566.  
  567.         (if (> (+ (< #xfdver #xfd2ver) (< #xfdrev #xfd2rev) ) 0)
  568.             (copyfiles (prompt #upd-xfd)
  569.                 (help @copylib-help)
  570.                 (source "libs/XfdMaster.Library")
  571.                 (dest "LIBS:")
  572.                 (optional nofail askuser)
  573.             )
  574.         )
  575.  
  576.         (if (> (+ (< #xadver #xad2ver) (< #xadrev #xad2rev) ) 0)
  577.             (copyfiles (prompt #upd-xad)
  578.                 (help @copylib-help)
  579.                 (source "libs/XadMaster.Library")
  580.                 (dest "LIBS:")
  581.                 (optional nofail askuser)
  582.             )
  583.         )
  584.  
  585.         (if (> (+ (< #vcpver #vcp2ver) (< #vcprev #vcp2rev) ) 0)
  586.             (copyfiles (prompt #upd-vcp)
  587.                 (help @copylib-help)
  588.                 (source "VCPrefs")
  589.                 (dest "SYS:Prefs")
  590.                 (optional nofail askuser)
  591.             )
  592.         )
  593.  
  594.         (P_setvcenv)
  595.  
  596.         (complete    100)
  597.  
  598.     )
  599. )
  600.  
  601. (if (= #vc-startup 2)
  602.     (exit)
  603.     (exit    #needtoreset)
  604. )
  605.